package com.spzx.product.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.spzx.product.domain.*;

import java.util.List;
import java.util.Map;

public interface ProductService extends IService<Product> {

    //查询商品列表
    List<Product> selectProductList(Product product);

    int insertProduct(Product product);

    //获取商品详细信息
    Product selectProductById(Long id);

    int updateProduct(Product product);

    int deleteProductByIds(Long[] ids);

    //查询畅销商品
    List<ProductSku> getTopSale();

    //远程调用使用，商品列表
    List<ProductSku> selectProductSkuList(SkuQuery skuQuery);

    //根据skuId获取sku信息
    ProductSku getProductSku(Long skuId);

    //根据商品id获取商品基本信息
    Product getProduct(Long id);

    //根据skuId获取价格数据
    SkuPrice getSkuPrice(Long skuId);

    //根据商品id获取详细信息
    ProductDetails getProductDetails(Long id);

    //根据商品id获取规格数据
    Map<String, Long> getSkuSpecValue(Long id);

    //根据skuId获取销售量
    SkuStockVo getSkuStock(Long skuId);

    //根据skuId列表获取对应价格数据
    List<SkuPrice> getSkuPriceList(List<Long> skuIdList);

    //下单检验库存远程调用使用接口
    String checkAndLock(String orderNo, List<SkuLockVo> skuLockVoList);

    //解锁
    void unlock(String orderNo);

    ////扣减库存
    void minus(String orderNo);
}
